package chpt05.shopping;

import java.util.List;

import chpt05.shopping.dao.CommodityDAO;
import chpt05.shopping.dao.CommodityDAOArrayImpl;
import chpt05.shopping.dao.CommodityDAOArrayListImpl;
import chpt05.shopping.ui.ConsoleMenuImpl;
import chpt05.shopping.ui.IMenu;

public class MainWithDAO {
	public static void main(String[] args) {
		// 新建CommodityDAO并进行初始化
		CommodityDAO dao = new CommodityDAOArrayImpl(10);
		// CommodityDAO dao = new CommodityDAOArrayListImpl();
		dao.init();
		
		// 显示商品列表
		List<Commodity> allCommodities = dao.findAll();
        System.out.println("所有商品：");
        for (Commodity commodity : allCommodities) {
            System.out.println(commodity);
        }
		
		// 根据名称查找商品列表
		String searchName = "果";
        List<Commodity> result = dao.findByName(searchName);
        System.out.println("名称包含 " + searchName + " 的商品列表：");
        for (Commodity commodity : result) {
            System.out.println(commodity);
        }
        
        // 根据id查找商品
        Commodity commodity2 = dao.findById(2);
		
		IMenu menu = new ConsoleMenuImpl(); // 控制台界面版本
		// IMenu menu = new GUIMenuImpl(); // 图形用户界面版本
		
		// 将相应商品放入购物车
		ShoppingCart cart = new ShoppingCart(10);
		for (Commodity e : result) {
			cart.add(e);
		}
		cart.add(commodity2);
		cart.add(commodity2);
		menu.showShoppingCart(cart);
		/* 移除商品commodity2：数量减少 */
		System.out.println("移除commodity2");
		cart.remove(commodity2.getId());
		menu.showShoppingCart(cart);
		/* 移除商品：移除一个条目 */
		System.out.println("再移除commodity2");
		cart.remove(commodity2.getId());
		menu.showShoppingCart(cart);
	}
}
